package com.nine.service.impl;

import cn.hutool.core.util.ObjectUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.nine.dao.UserinfoDao;
import com.nine.entity.Dept;
import com.nine.entity.PageSort;
import com.nine.entity.Userinfo;
import com.nine.utils.MyTools;
import com.nine.service.UserinfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author ：婷儿
 * @date ：Created in 2022/6/25 9:53
 * @description：userinfo表的service的实现类
 * @modified By：
 * @version: 1.0
 */
@Service
public class UserinfoServiceImpl extends MyTools implements UserinfoService {
    @Autowired
    private UserinfoDao userinfoDao;
    @Override
    public List<Userinfo> select(PageSort pageSort) {
//          开启分页
        PageHelper.startPage(pageSort.getPage(),pageSort.getLimit());
        List<Userinfo> userinfoList = userinfoDao.select(pageSort);
        Page page= (Page) userinfoList;
        return page;
    }


    @Override
    public int add(Userinfo userinfo) {
        Userinfo userinfo1 = super.makePasswordSalt(userinfo);
        // 日期格式转换
        userinfo1.setCreateTime(Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())));
        userinfo1.setAvatar("https://fmcspace.oss-cn-hangzhou.aliyuncs.com/002.webp");
        return userinfoDao.add(userinfo1);
    }

    @Override
    public int delete(String[] userId) {
        return userinfoDao.delete(userId);
    }

    @Override
    public int update(Userinfo userinfo) {
        // 当前修改时间
        userinfo.setUpdateTime(Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date())));
        return userinfoDao.update(userinfo);
    }

    @Override
    public String selectUsername(String loginName) {
        return userinfoDao.selectUsername(loginName);
    }

    @Override
    public int selectCount() {
        return userinfoDao.selectCount();
    }


    @Override
    public int updatePasswordInt(Userinfo userinfo) {
        Userinfo userinfo1 = super.makePasswordSalt(userinfo);
        return userinfoDao.updatePasswordInt(userinfo1);
    }
    @Override
    public String selectUpdate(String login_name, Integer user_id) {
        return userinfoDao.selectUpdate(login_name, user_id);
    }

    @Override
    public boolean checkUser(Map<String, Object> map) {
        //缓存明文密码，临时用
        String  passwordTemp=map.get("password").toString();
        //1、根据用户名查询用户的所有信息,  去掉密码的key
        //根据用户名查询出所有的数据
        List<Userinfo> userinfoList = userinfoDao.findAllUserInfoByName(map.get("loginName").toString());
        if(null!=userinfoList&&userinfoList.size()>0){
            Userinfo userinfo = userinfoList.get(0);
            //2、根据查询出来的盐值和传入的明文密码加密产生新密码，
            String salt=userinfo.getSalt();

            //3、校验查询出来的密文和新密码是否一致
            //获取数据库中的密文
            String passwordDateBase = userinfo.getPassword();
            //根据登录页面重新加密生成的密文
            String passwordNew= MyTools.makePassword(passwordTemp,salt);
            if(passwordDateBase.equals(passwordNew)){
                return true;
            }
        }
        return false;
    }

    @Override
    public Userinfo findUserInfoByName(String loginName) {
        List<Userinfo> userinfoList = userinfoDao.findAllUserInfoByName(loginName);
        return userinfoList.get(0);
    }

    @Override
    public Userinfo selectById(Integer userId) {
        List<Userinfo> userinfoList = userinfoDao.selectById(userId);
        return userinfoList.get(0);
    }
    /**
     * @create by: Fmc
     * @description: 修改个人信息
     * @create time: 2022/6/29 18:11
     * @return: boolean
     */
    @Override
    public boolean updateOneself(Userinfo userinfo) {
        return false;
    }
}
